package com.wang.cloud.manage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wang.cloud.manage.domain.entity.RoleMenuRelationEntity;
import com.wang.cloud.manage.domain.vo.RoleMenuIdsVo;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 系统-角色-菜单关联表 服务类
 * </p>
 *
 * @author wy
 * @since 2024-07-15
 */
public interface IRoleMenuRelationService extends IService<RoleMenuRelationEntity> {


    /**
     * 根据角色id 查询角色绑定的菜单id列表
     *
     * @param roleId 角色id
     * @return
     */
    List<Long> queryMenuIdsByRoleId(Long roleId);

    /**
     * 根据角色id 查询角色绑定的菜单id列表
     *
     * @param roleId 角色id
     * @return
     */
    RoleMenuIdsVo queryMenuIdsVoByRoleId(Long roleId);

    /**
     * 根据角色id列表 查询角色绑定的菜单id列表
     *
     * @param roleIds 角色id列表
     * @return
     */
    Map<Long, List<Long>> queryMenuIdsByRoleIds(Collection<Long> roleIds);

    /**
     * 保存 角色的菜单关系
     *
     * @param roleId
     * @param fullMenuIds 全选的菜单id列表
     * @param halfMenuIds 半选的菜单id列表
     * @return
     */
    Boolean saveRoleMenus(Long roleId, Collection<Long> fullMenuIds, Collection<Long> halfMenuIds);

    /**
     * 根据角色id 删除关系
     *
     * @param roleId
     * @return
     */
    Boolean delByRoleId(Long roleId);

    /**
     * 根据菜单id 删除关系
     *
     * @param menuId
     * @return
     */
    Boolean delByMenuId(Long menuId);

    /**
     * 根据菜单id 查询对应的角色id
     *
     * @param menuId
     * @return
     */
    Set<Long> queryRoleIdsByMenuId(Long menuId);
}
